package com.ruoyi.psi.sale.order.domain;

import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import javax.validation.constraints.NotNull;
import java.sql.Timestamp;
import java.util.List;

/**
 * 销售订单，数据传输对象，面向前端需求
 * @author lsy 2021.7.28
 * 修改：
 */
@Data
public class SaleOrderDto {
    /**
     * 销售订单编号
     */
    @NotNull(message = "销售订单编号不能为空")
    @ApiModelProperty(value = "销售订单编号", required = true)
    private String saleOrderId;

    /**
     * 订单类型
     * 0-销售订单 1-预测订单
     */
    @ApiModelProperty(value = "订单类型")
    private String saleOrderType;

    /**
     * 销售员编号
     */
    @NotNull(message = "销售员编号不能为空")
    @ApiModelProperty(value = "销售员编号", required = true)
    private String staffSaleId;

    /**
     * 销售员名称
     */
    @ApiModelProperty("销售员名称")
    private String staffSaleName;

    /**
     * 订单时间
     */
    @ApiModelProperty("订单时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Timestamp createTime;

    /**
     * 客户编号
     */
    @NotNull(message = "客户编号不能为空")
    @ApiModelProperty(value = "客户编号", required = true)
    private String customerInfoId;

    /**
     * 客户名称
     */
    @ApiModelProperty("客户名称")
    private String customerInfoName;

    /**
     * 销售总数量
     */
    @ApiModelProperty("销售总数量")
    private double saleNumberTotal;
    /**
     * 销售总额
     */
    @ApiModelProperty("销售总额")
    private double salePriceTotal;
    /**
     * 已出库数量
     */
    @ApiModelProperty("已出库数量")
    private double saleDeliveryNumberTotal;
    /**
     * 已出库金额
     */
    @ApiModelProperty("已出库金额")
    private double saleDeliveryPriceTotal;

    /**
     * 要求交货时间
     */
    @ApiModelProperty(value = "要求交货时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Timestamp requiredDeliveryTime;

    /**
     * 实际交货时间
     */
    @ApiModelProperty(value = "实际交货时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Timestamp actualDeliveryTime;

    /**
     * 订单超期时间
     */
    @ApiModelProperty("订单超期时间")
    private long OrderOverdueTime;

    /**
     * 销售情况
     * 0：未审核、1：已审核/待出库、2：已出库。
     */
    @ApiModelProperty(value = "销售情况")
    private String saleOrderStatus;

    /**
     * 收款情况
     * 0：等待收款、1：完全收款。
     */
    @ApiModelProperty(value = "收款情况")
    private String collectionStatus;

    /**
     * 备注
     */
    @ApiModelProperty("备注")
    private String remark;

    /**
     * 是否审批
     */
    @ApiModelProperty("是否审批")
    private String approvalFlag;

    /**
     * 销售订单详细表
     */
    @ApiModelProperty("销售订单详细表")
    private List<SaleOrderListDto> saleOrderLists;
}
